package code

import (
	"context"
	"fmt"
	"time"
)

// 根contexts
// context.Background()
// 占位context, 当做占位符
// ctx := context.TODO()
// fmt.Printf("ctx: %v\n", ctx)

// Value Context 使用
func Context02() {
	// 一般传递可读字段
	ctx := context.WithValue(context.Background(), "userId", "12345")
	go performTask(ctx, "userId")
	go performTask(ctx, "userId2")
	ctx2 := context.WithValue(ctx, "userId2", "11111")
	go performTask(ctx2, "userId")
	go performTask(ctx2, "userId2")
	time.Sleep(1 * time.Second)
}

func performTask(ctx context.Context, key string) {
	userId := ctx.Value(key)
	fmt.Printf("%s: %v\n", key, userId)
}
